def removeLeafNodes(root, x):
    # 后序遍历：先处理子节点，再处理当前节点
    # 递归处理左子树
    if root.left:
        root.left = removeLeafNodes(root.left, x)

    # 递归处理右子树
    if root.right:
        root.right = removeLeafNodes(root.right, x)

    # 检查当前节点是否为叶子节点并且值等于 x
    if not root.left and not root.right and root.data == x:
        return None

    # 返回处理后的树的当前节点（可能未改变）
    return root


# 辅助函数：中序遍历树，用于输出结果
def inorderTraversal(root):
    if root:
        print(root.data, end=' ')
        inorderTraversal(root.left)
        inorderTraversal(root.right)

class newNode:
    def __init__(self, data):
        self.data = data
        self.left = self.right = None


# 构建示例树
root = newNode(6)
root.left = newNode(5)
root.right = newNode(4)
root.left.left = newNode(1)
root.left.right = newNode(2)
root.right.right = newNode(5)

# 目标值 x
x = 5

# 删除值为 x 的叶子节点（包括后来变成叶子的节点）
root = removeLeafNodes(root, x)

# 输出处理后的树的遍历结果
print("\n" , f"删除目标值{x}后的树为(前序遍历)：")
inorderTraversal(root)


# 构建示例树
root1 = newNode(6)
root1.left = newNode(5)
root1.right = newNode(4)
root1.left.left = newNode(5)
root1.left.right = newNode(5)
root1.right.right = newNode(5)

# 目标值 x
x = 5

# 删除值为 x 的叶子节点（包括后来变成叶子的节点）
root1 = removeLeafNodes(root1, x)

# 输出处理后的树的遍历结果
print("\n" , f"删除目标值{x}后的树为(前序遍历)：")
inorderTraversal(root1)